package model;

import dominio.factory.FactoryGame;
import dominio.individuos.Villano;
import dominio.investigacion.Caso;
import dominio.investigacion.Expedientes;
import dominio.investigacion.Mapamundi;
import dominio.investigacion.OrdenDeArresto;
import dominio.ubicaciones.Pais;

public class CarmenSandiegoAppModel {
	
	private FactoryGame factory = new FactoryGame();
	private Pais paisActual;
	private Pais paisAnterior;
	private Villano acusado;
	private String rutaRecorrida;
	private Boolean gano = false;
	
	private static final CarmenSandiegoAppModel instance = new CarmenSandiegoAppModel();
	
	public static CarmenSandiegoAppModel getInstance() {
		return instance;
	}

	public FactoryGame getFactory() {
		return this.factory;
	}
	
	public void setFactory(FactoryGame factory) {
		this.factory = factory;
	}	
	
	////
	
	public Caso getCaso() {
		return this.getFactory().getCaso();
	}
	
	public Expedientes getExpedientes() {
		return this.getFactory().getExpedientes();
	}
	
	public Mapamundi getMapamundi() {
		return this.getFactory().getMapamundi();
	}
	
	////
	
	
	public CarmenSandiegoAppModel() {
		Villano villano = new Villano();
		villano.setNombre("Desconocido");
		this.acusado = villano;
		this.rutaRecorrida = this.getCaso().getPaisDelRobo().getNombre();
		this.paisActual =  this.getCaso().getPaisDelRobo();
	}

	public Pais getPaisActual() {
		return this.paisActual;
	}
	
	public void setPaisActual(Pais pais) {
		this.paisActual = pais;
	}

	public Pais getPaisAnterior() {
		return this.paisAnterior;
	}
	
	public void setPaisAnterior(Pais pais) {
		this.paisAnterior = pais;
	}

	public Villano getAcusado() {
		return acusado;
	}

	public void setAcusado(Villano villano) {
		this.acusado = villano;
		this.gano = this.getVillanoResponsable().getNombre() == villano.getNombre();
	}

	public String getRutaRecorrida() {
		return rutaRecorrida;
	}

	public void setRutaRecorrida(String rutaRecorrida) {
		this.rutaRecorrida = rutaRecorrida;
	}

	public Villano getVillanoResponsable() {
		return this.getCaso().getResponsable();
	}
	
	public Boolean getGano() {
		return gano;
	}

	public void setGano(Boolean gano) {
		this.gano = gano;
	}

	public void viajar(Pais pais) {
		this.setPaisAnterior(this.getPaisActual());
		this.setPaisActual(pais);
		this.setRutaRecorrida((this.getRutaRecorrida()+" > "+pais.getNombre()));
	}

	
}
